/**
 * 身份验证工具函数
 */

/**
 * 从localStorage获取认证令牌
 * @returns {string|null} 认证令牌或null（如果未登录）
 */
export function getAuthToken() {
  return localStorage.getItem('token');
}

/**
 * 从localStorage获取当前登录用户ID
 * @returns {string|null} 用户ID或null（如果未登录）
 */
export function getUserId() {
  try {
    console.log('authUtils: 尝试获取用户ID');
    
    // 尝试从localStorage直接获取userId
    let userId = localStorage.getItem('userId');
    if (userId) {
      console.log('authUtils: 从localStorage.userId获取到ID:', userId);
      return userId;
    }
    
    // 尝试从user对象获取
    const userStr = localStorage.getItem('user');
    if (userStr) {
      try {
        const userData = JSON.parse(userStr);
        if (userData && userData.id) {
          console.log('authUtils: 从userData获取到ID:', userData.id);
          return userData.id;
        }
      } catch (e) {
        console.error('authUtils: 解析user对象失败:', e);
      }
    }
    
    console.log('authUtils: 未找到用户ID');
    return null;
  } catch (error) {
    console.error('authUtils: 获取用户ID失败:', error);
    return null;
  }
}

/**
 * 保存用户数据到localStorage
 * @param {Object} userData 用户数据
 */
function saveUserData(userData) {
  // 如果user已存在，合并数据而不是覆盖
  try {
    const existingData = localStorage.getItem('user');
    if (existingData) {
      const merged = { ...JSON.parse(existingData), ...userData };
      localStorage.setItem('user', JSON.stringify(merged));
      console.log('authUtils: 合并并保存用户数据:', merged);
    } else {
      localStorage.setItem('user', JSON.stringify(userData));
      console.log('authUtils: 保存新用户数据:', userData);
    }
  } catch (error) {
    console.error('authUtils: 保存用户数据失败:', error);
  }
}

/**
 * 检查用户是否已登录
 * @returns {boolean} 是否已登录
 */
export function isLoggedIn() {
  return !!getAuthToken();
}

/**
 * 保存认证信息到localStorage
 * @param {string} token JWT令牌
 * @param {Object} userData 用户数据
 */
export function saveAuthInfo(token, userData) {
  console.log('authUtils: 保存认证信息', userData);
  
  if (token) {
    localStorage.setItem('token', token);
    localStorage.setItem('isLoggedIn', 'true');
  }
  
  if (userData) {
    // 确保保存userId到专门的位置
    if (userData.id) {
      localStorage.setItem('userId', userData.id);
      console.log('authUtils: 保存userId到localStorage:', userData.id);
    }
    
    // 保存完整用户数据
    localStorage.setItem('user', JSON.stringify(userData));
    console.log('authUtils: 保存完整用户数据:', userData);
  }
}

/**
 * 清除认证信息
 */
export function clearAuthInfo() {
  console.log('authUtils: 清除认证信息');
  localStorage.removeItem('token');
  localStorage.removeItem('isLoggedIn');
  localStorage.removeItem('userRole');
  localStorage.removeItem('userId');
  localStorage.removeItem('user');
  localStorage.removeItem('username');
  localStorage.removeItem('cachedAvatarUrl');
  localStorage.removeItem('avatarCacheTime');
  console.log('authUtils: 已清除所有登录信息');
} 